package com.wangxin.study8.lock;

import java.util.concurrent.TimeUnit;

public interface ReentrantRedisLockService {
    /**
     * 自旋获取锁
     * @param key 锁的key
     * @param timeOut 等待锁的超时时间
     * @param timeUnit 单位
     * @param expire 锁的过期时间
     * @return
     */
    boolean tryLock (String key, long timeOut, TimeUnit timeUnit,long expire);

    /**
     * 尝试获取，不做自旋
     * @param key 锁的key
     * @param expire 锁的过期时间
     * @return
     */
    boolean tryLock(String key,long expire);

    /**
     * 阻塞获取锁
     * @param key
     * @param expireSecs
     */
    void lock(String key, long expireSecs);

    /**
     * 锁释放
     * @param key
     */
    boolean unlock(String key);
}
